package com.ls.service;

import com.ls.entity.LoginTicket;
import com.ls.entity.User;
import org.springframework.security.core.GrantedAuthority;

import java.util.Collection;
import java.util.Map;

public interface UserService {

    /**
     * 通过id查询用户信息
     *
     * @param id
     * @return
     */
    User queryUserById(int id);

    /**
     * 注册用户
     *
     * @param user
     * @return
     */
    Map<String, Object> register(User user);

    /**
     * 获取用户状态
     *
     * @param userId
     * @param code
     * @return
     */
    int activation(int userId, String code);

    /**
     * 用户登录
     *
     * @param username
     * @param password
     * @param expiredSeconds
     * @return
     */
    Map<String, Object> login(String username, String password, long expiredSeconds);

    /**
     * 退出登录
     *
     * @param ticket
     */
    void logout(String ticket);

    /**
     * 查询登录凭证
     *
     * @param ticket
     * @return
     */
    LoginTicket queryLoginTicketByTicket(String ticket);

    /**
     * 修改用户头像路径
     *
     * @param id
     * @param headerUrl
     */
    void updateUserHeaderUrl(int id, String headerUrl);

    /**
     * 修改用户密码
     *
     * @param id
     * @param password
     */
    void updateUserPassword(int id, String password);

    /**
     * 根据用户名查询用户
     *
     * @param username
     * @return
     */
    User queryUserByUsername(String username);

    /**
     * 功能描述: <br>
     * 获取某个用户的权限
     *
     * @param userId
     * @return {@link Collection<? extends  GrantedAuthority>}
     * @author ls
     * @date 2021/8/23 15:13
     */
    Collection<? extends GrantedAuthority> getAuthorities(int userId);
}
